<?php

/**
 * 类（对象）的快捷调用方式
 * @package    \
 * @author     HuangYi
 * @copyright  Copyright (c) 2011-07-01——2013-03-30
 * @license    New BSD License
 * @version    $Id: \Monkey\shortcut.php 版本号 2013-03-30 $
 */

/**
 * 设置和获取用户应用
 * @param \Monkey\_App $app
 * @return \Monkey\_App
 */
function oApp(\Monkey\_App $app=null)
{
    static $_app;
    if(!$_app && $app) $_app=$app;
    return $_app;
}
/**
 * 获取缓存管理器
 * @return \Monkey\CacheManager
 */
function oCacheManager()
{
    static $cache;
    !$cache and $cache=new \Monkey\CacheManager();
    return $cache;
}

/**
 * 获取控制器管理器
 * @return \Monkey\ControllManager
 */
function oControllManager()
{
    return \Monkey\ControllManager::_instance();
}

/**
 * 新建数据层管理员
 * @param string|integer $defaultKey 默认使用的连接池键名
 * @return \Monkey\DatabaseManager
 */
function oNewDatabaseManager($defaultKey)
{
    return new \Monkey\DatabaseManager($defaultKey);
}

/**
 * 获取数据层的连接管理员
 * @return \Monkey\Database\LinkManager
 */
function oLinkManager()
{
    return \Monkey\Database\LinkManager::_instance();
}

/**
 * 获取模块管理器
 * @return \Monkey\ModuleManager
 */
function oModuleManager()
{
    return \Monkey\ModuleManager::_instance();
}

/**
 * @param $moduleName
 * @return \Monkey\Module\_Interface
 */
function oModule($moduleName)
{
    return call_user_func(
        array('\\Module\\'.$moduleName.'\\Main', '_instance'),
        null
    );
}

/**
 * 获取插件管理器
 * @return \Monkey\PluginManager
 */
function oPluginManager(){
    return \Monkey\PluginManager::_instance();
}

/**
 * 获取请求类
 * @return \Monkey\Request
 */
function oRequest(){
    static $request;
    !$request and $request=new \Monkey\Request();
    return $request;
}

/**
 * 获取响应器
 * @return \Monkey\Response
 */
function oResponse()
{
    return \Monkey\Response::_instance();
}

/**
 * 获取路由管理器
 * @return \Monkey\RouteManager
 */
function oRouteManager()
{
    return \Monkey\RouteManager::_instance();
}

/**
 * 新建模板解析器
 * @param string $tplRoot 模板根目录
 * @param string $type 模板方案，目前支持monkeyLabel方案，你可以方便的添加
 * @return \Monkey\Template
 */
function oNewTemplate($tplRoot, $type=null)
{
    return new \Monkey\Template($tplRoot, $type);
}

/**
 * 获取主题管理器
 * @return \Monkey\ThemeManager
 */
function oThemeManager()
{
    return \Monkey\ThemeManager::_instance();
}

/**
 * 获取主题管理器
 * @return \Monkey\LanguageManager
 */
function oLanguageManager()
{
    return \Monkey\LanguageManager::_instance();
}
